function loadHidden(url) {
    document.body.insertAdjacentHTML("beforeEnd", "<iframe name=loadHiddenFrame width=0 height=0></iframe>");
    var doc = loadHiddenFrame.document;
    doc.open();
    doc.write("<body>");
    doc.write("<iframe name=hiddenFrame width=0 height=0 src=\"" + url + "\"></iframe>");
    doc.write("</body>");
    doc.close();
}
///////////////////////////////////////////////////////////////////
function printHidden(url) {
    document.body.insertAdjacentHTML("beforeEnd", "<iframe name=printHiddenFrame width=0 height=0></iframe>");
    var doc = printHiddenFrame.document;
    doc.open();
    doc.write("<body onload=\"setTimeout('parent.onprintHiddenFrame()', 0)\">");
    doc.write("<iframe name=printMe width=0 height=0 src=\"" + url + "\"></iframe>");
    doc.write("</body>");
    doc.close();
}
///////////////////////////////////////////////////////////////////
function onprintHiddenFrame() {
    function onfinish() {
        printHiddenFrame.outerHTML = "";
        if (window.onprintcomplete) window.onprintcomplete();
    }
    printFrame(printHiddenFrame.printMe, onfinish);
}

//////////////////////////////////////////////////////////////////////////////////////

// The code by Captain <cerebrum@iname.com>
// Mead & Company, http://www.meadroid.com/wpm/

// fake print() for IE4.x
if (!printIsNativeSupport()) window.print = printFrame;

// main stuff
///////////////////////////////////////////////////////////////////
function printFrame(frame, onfinish) {
    if (!frame) frame = window;

    if (frame.document.readyState !== "complete" && !confirm("The document to print is not downloaded yet! Continue with printing?")) {
        if (onfinish) onfinish();
        return;
    }

    if (printIsNativeSupport()) {
        /* focus handling for this scope is IE5Beta workaround,
           should be gone with IE5 RTM. */
        var focused = document.activeElement;
        frame.focus();
        frame.self.print();
        if (onfinish) onfinish();
        if (focused && !focused.disabled) focused.focus();
        return;
    }

    var eventScope = printGetEventScope(frame);
    var focused = document.activeElement;

    window.printHelper = function() {
        execScript("on error resume next: printWB.ExecWB 6, 1", "VBScript");
        printFireEvent(frame, eventScope, "onafterprint");
        printWB.outerHTML = "";
        if (onfinish) onfinish();
        if (focused && !focused.disabled) focused.focus();
        window.printHelper = null;
    }

    document.body.insertAdjacentHTML("beforeEnd",
        "<object id=\"printWB\" width=0 height=0 \
        classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"></object>");

    printFireEvent(frame, eventScope, "onbeforeprint");
    frame.focus();
    window.printHelper = printHelper;
    setTimeout("window.printHelper()", 0);
}

// helpers
///////////////////////////////////////////////////////////////////
function printIsNativeSupport() {
    var agent = window.navigator.userAgent;
    var i = agent.indexOf("MSIE ") + 5;
    return parseInt(agent.substr(i)) >= 5 && agent.indexOf("5.0b1") < 0;
}
///////////////////////////////////////////////////////////////////
function printFireEvent(frame, obj, name) {
    var handler = obj[name];
    switch (typeof(handler)) {
        case "string": frame.execScript(handler); break;
        case "function": handler();
    }
}
///////////////////////////////////////////////////////////////////
function printGetEventScope(frame) {
    var frameset = frame.document.all.tags("FRAMESET");
    if (frameset.length) return frameset[0];
    return frame.document.body;
}
///////////////////////////////////////////////////////////////////
function Test() {
    alert("This is test function in printFunctions.js");
}